| File: HubOptionsSetup`T.cs | Web Access |
| Project: src\aspnetcore\src\SignalR\server\Core\src\Microsoft.AspNetCore.SignalR.Core.csproj (Microsoft.AspNetCore.SignalR.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; namespace Microsoft.AspNetCore.SignalR; /// <summary> /// Class to configure the <see cref="HubOptions"/> for a specific <typeparamref name="THub"/>. /// </summary> /// <typeparam name="THub">The <see cref="Hub"/> type to configure.</typeparam> public class HubOptionsSetup<THub> : IConfigureOptions<HubOptions<THub>> where THub : Hub { private readonly HubOptions _hubOptions; /// <summary> /// Constructs the options configuration class. /// </summary> /// <param name="options">The global <see cref="HubOptions"/> from Dependency Injection.</param> public HubOptionsSetup(IOptions<HubOptions> options) { _hubOptions = options.Value; } /// <summary> /// Configures the default values of the <see cref="HubOptions"/>. /// </summary> /// <param name="options">The options to configure.</param> public void Configure(HubOptions<THub> options) { // Do a deep copy, otherwise users modifying the HubOptions<THub> list would be changing the global options list options.SupportedProtocols = new List<string>(_hubOptions.SupportedProtocols ?? Array.Empty<string>()); options.KeepAliveInterval = _hubOptions.KeepAliveInterval; options.HandshakeTimeout = _hubOptions.HandshakeTimeout; options.ClientTimeoutInterval = _hubOptions.ClientTimeoutInterval; options.EnableDetailedErrors = _hubOptions.EnableDetailedErrors; options.MaximumReceiveMessageSize = _hubOptions.MaximumReceiveMessageSize; options.StreamBufferCapacity = _hubOptions.StreamBufferCapacity; options.MaximumParallelInvocationsPerClient = _hubOptions.MaximumParallelInvocationsPerClient; options.DisableImplicitFromServicesParameters = _hubOptions.DisableImplicitFromServicesParameters; options.UserHasSetValues = true; if (_hubOptions.HubFilters != null) { options.HubFilters = new List<IHubFilter>(_hubOptions.HubFilters); } } }